"""
对于敏感信息，建议保存在服务器端，不存储在浏览器中，传给浏览器保存的是一个经过了加密的字符串。采用方式为Session，其依赖于Cookie
"""
from datetime import timedelta
from flask import Flask,session

app = Flask(__name__)

# 嘎嘎，这里有个上天的节奏,骚年们,去学密码学吧～～～～
# 给session设置加密字符串：flask会将这个混淆字符串(随便输)和session进行加密,若不加密,则当网页访问使用回话时将会报以下错误
# RuntimeError: the session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
app.config['SECRET_KEY'] = 'fsadgsgds^43%$##egwe5wvs×dfse×g'

@app.route('/')
def hello():
    return 'hello world'

@app.route('/login')
def login():
    """登录成功使用session保存用户登录成功的数据
    session是将用户数据保存到服务器的内存中--->项目中会将session的存储调整到redis数据库,具体怎么调请看项目
    """
    session['user_name'] = 'haha'
    session['user_id'] = '1'

    # 以下两行代码实现设置session有效期，第一行代码默认有效期一个月，第二行代码设置指定有效期10分钟
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=10)

    return 'login success'

@app.route('/index')
def index():
    """访问首页使用session获取用户登录信息"""
    user_name = session.get('user_name','')
    user_id = session.get('user_id','')
    return 'index %s --- %s' % (user_name,user_id)

@app.route('/login_out')
def login_out():
    """退出登录删除session中的用户信息"""
    session.pop('user_name','')
    session.pop('user_id','')
    return 'login_out success'

if __name__ == '__main__':
    app.run(debug=True)
